package com.flower.service;

import com.flower.domain.dto.farmer.FlowerDetailDTO;
import com.flower.domain.entity.FlowerCulture;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

public interface FlowerCultureService extends IService<FlowerCulture> {
    
    /**
     * 获取花卉详细信息（包括基本信息、文化信息和养护信息）
     *
     * @param encyclopediaId 百科ID
     * @return 花卉详细信息
     */
    FlowerDetailDTO getFlowerDetail(Long encyclopediaId);
    
    /**
     * 保存或更新花卉文化信息
     *
     * @param flowerCulture 花卉文化信息
     * @return 是否成功
     */
    boolean saveOrUpdateCulture(FlowerCulture flowerCulture);
    
    /**
     * 获取所有花卉的简要信息列表
     *
     * @return 花卉列表
     */
    List<FlowerDetailDTO> getFlowerList();
    
    /**
     * 增加访问量
     *
     * @param id 花卉ID
     */
    void incrementViewCount(Long id);
    
    /**
     * 搜索花卉
     *
     * @param keyword 关键词
     * @return 花卉列表
     */
    List<FlowerDetailDTO> searchFlowers(String keyword);
    
    /**
     * 获取花卉文化知识
     *
     * @param encyclopediaId 百科ID
     * @return 花卉文化知识
     */
    FlowerCulture getFlowerCulture(Long encyclopediaId);
    
    /**
     * 根据百科ID判断文化信息是否存在
     *
     * @param encyclopediaId 百科ID
     * @return 是否存在
     */
    boolean existsByEncyclopediaId(Long encyclopediaId);
    
    /**
     * 根据百科ID删除文化信息
     *
     * @param encyclopediaId 百科ID
     * @return 是否成功
     */
    boolean removeByEncyclopediaId(Long encyclopediaId);
    
    /**
     * 批量更新文化信息状态
     *
     * @param ids 百科ID列表
     * @param status 状态值
     * @return 是否成功
     * @deprecated 数据库中不存在status字段，此方法已废弃
     */
    @Deprecated
    boolean updateStatusBatch(List<Long> ids, Integer status);
    
    /**
     * 根据百科ID查询文化信息列表
     *
     * @param encyclopediaIds 百科ID列表
     * @param status 状态值（已废弃，保留参数以兼容现有代码）
     * @return 文化信息列表
     */
    List<FlowerCulture> listByEncyclopediaIdsAndStatus(List<Long> encyclopediaIds, Integer status);
    
    /**
     * 高级查询花卉文化信息
     *
     * @param keyword 关键词
     * @param hasPoetry 是否包含诗词
     * @param hasLiteraryQuotations 是否包含文学典故
     * @return 文化信息列表
     */
    List<FlowerCulture> advancedSearch(String keyword, Boolean hasPoetry, Boolean hasLiteraryQuotations);
} 